package erfgame.core.util;

public class ArrayUtils {
	
	public static final boolean equals( int[] a1, int[] a2 ) {
		return equals( a1, 0, a1.length, a2, 0, a2.length );
	}
	
	public static final boolean equals( int[] a1, int s1, int l1, int[] a2, int s2, int l2 ) {
		if( l1 == l2 ) {
			for( int i=l1; i>0; ) {
				i--;
				int i1 = s1 + i;
				int i2 = s2 + i;
				int v1 = a1[i1];
				int v2 = a2[i2];
				if( v1 != v2 ) {
					return false;
				}
			}
			return true;
		} else {
			return false;
		}
	}
	
	public static final boolean equals( int[][][] a1, int[][][] a2 ) {
		if( a1.length == a2.length ) {
			for( int i=0; i<a1.length; i++ ) {
				if( !equals( a1[i], a2[i] ) ) {
					return false;
				}
			}
			return true;
		} else {
			return false;
		}
	}
	
	public static final boolean equals( int[][] a1, int[][] a2 ) {
		if( a1.length == a2.length ) {
			for( int i=0; i<a1.length; i++ ) {
				if( !equals( a1[i], a2[i] ) ) {
					return false;
				}
			}
			return true;
		} else {
			return false;
		}
	}
	
	public static final boolean equals( byte[] a1, byte[] a2 ) {
		if( a1.length == a2.length ) {
			for( int i=0; i<a1.length; i++ ) {
				if( a1[i] != a2[i] ) {
					return false;
				}
			}
			return true;
		} else {
			return false;
		}
	}
}
